package com.foreknow.demo9;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * IO(输入/输出流)：Input/Output
 * IO流：主要用来处理设备间数据的传输。
 * Input输入流：表示对文件的读操作
 * Output输出流：表示向文件中写数据
 * 流的分类
 * 1. 输入流/输出流
 * 2. 字节流/字符流  凡是以InputStream或OutputStream结尾的都是字节流  凡是以Reader或Writer结尾的都是字符流
 *    字节流：可以操作任何数据类型（文本、图片、音频、视频）
 *    字符流：只能操作纯字符的数据
 *    所有字节流的根父类： InputStream和OutputStream
 *    所有字符流的根父类： Reader和Writer
 * 3. 节点流/处理流
 *    节点流：凡是直接关联到数据源(文件)的就叫节点流。在查看文档的时候，可以根据构造器区分
 *    处理流：如果构造器不是直接关联数据源就是处理流。处理流是对节点流功能的增强。
 */
public class Test {
    public static void main(String[] args) {
        try {
            FileInputStream fis = new FileInputStream("login.png"); //源文件
            FileOutputStream fos = new FileOutputStream("login_new.png");//目标文件
            //读取一个字节
            int read = fis.read();
            //判断文件是否读取结尾(-1)
            while (read != -1){
                //将读取到的字节写到目标文件中
                fos.write(read);
                //读取下一下字节
                read = fis.read();
            }
            //关闭资源
            fis.close();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
